﻿/* PC INpact Toolkit for Chrome™

	PC INpact Toolkit for Chrome™ est une extension destinée au navigateur Chrome permettant d'accéder à de nombreuses fonctionnalités de PC INpact.
	Vous y retrouverez les actualités, brèves, calendriers du site, mais aussi les comptes Twitter de l'équipe ou des fonctionnalités de recherche.
	Des notifications peuvent aussi être affichées sur votre bureau, à chaque nouvelle publication sur le site (actualités, dossiers, tests).

	Main author : LEGRAND David
	Mail : david@pcinpact.com
	
	Google Code Project : http://pci.im/code-pci-chrome 
	Forum : http://pci.im/forum-pci-chrome
	
    This file is part of PC INpact Toolkit for Chrome™.

    PC INpact Toolkit for Chrome™ is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    PC INpact Toolkit for Chrome™ is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with PC INpact Toolkit for Chrome™.  If not, see <http://www.gnu.org/licenses/>. 

    You're not allowed to use PC INpact Toolkit for Chrome™ name or logo without permission 

	Loading GIF : http://www.ajaxload.info/

 */

// La fonction qui récupère l'url à traiter pour les actualités
function get_url_actus(url)
{
	// on récupère l'url stockée
	var url_s = window.localStorage.getItem('url');
	
	// On déclare la variable qui sera renvoyée
	var final_url;
	
	// On passe l'url passée en paramètre, si elle n'existe pas, on utilise une valeur par défaut
	// Si il n'y en a pas de stocker, on prend la page archive de base
	if(!url) 
	{
		if(url_s != null) final_url = url_s;
		else final_url = "http://www.pcinpact.com/actu/archive.php";
	}
	// Si un url est indiquée, on l'enregistre
	else 
	{
		final_url = url;
		window.localStorage.setItem('url', final_url);
	}
	
	// On renvoie le résultat
	return final_url;
}

// La fonction qui récupère le nom du rédacteur
function get_red_name(url)
{
	// On établit le tableau contenant la liste des rédacteurs et leurs identifiants
	var redacteurs = new Array();
	redacteurs["David"] = '2';
	redacteurs["Marc"] = '3';
	redacteurs["Nil"] = '4';
	redacteurs["Vincent"] = '8';
	redacteurs["Julien"] = '10';
	redacteurs["Damien"] = '11';
	redacteurs["Sébastien"] = '12';
	
	// On récupère l'indice du rédacteur contenu dans l'url passée en paramètre
	var indice_redacteur = url.split("&r=")[1];
	
	// On récupère le nom du rédacteur par rapport à cet indice
	var n_redac = "";
	for(var redacteur in redacteurs)
	{
		if (redacteurs[redacteur] == indice_redacteur) n_redac = redacteur;
	}
	
	//On renvoie le résultat
	return n_redac;
}

// La fonction qui récupère le flux des actualités
function get_actus(responseText, url, n_redac) 
{
	// On nettoie la page en supprimant les éléments inutiles
	var debut = responseText.indexOf("<div class=\"n_title_day\">");
	var result = responseText.substring(debut)
	var fin = result.indexOf("<div id=\"bloc_droite\">");
	result = result.substring(fin, 0);

	// On efface et modifie tous les éléments afin d'offrir une mise en page correcte
	if (n_redac != "") n_redac += " - ";
	result = result.replace(/href=\"\/actu/gi, "target=\"_blank\" href=\"http://www.pcinpact.com/actu");
	result = result.replace(/<br \/>/gi, "");
	result = result.replace(/<img.*>/gi, "");
	result = result.replace(/<div class=\"line_news_/gi, "</div><div class=\"line_news_");
	result = result.replace(/<div class=\"n_title_day\">/gi, "<div align='center'><div class=\"n_title_day\">" + n_redac);
	result = result.replace(/<div class=\"n_title_next\">/gi, "<br /><div align='center'><div class=\"n_title_next\">" + n_redac);
	result = result.replace(/gif\" style=\"/gi, "gif\" style=\"display:none; ");
	result = result.replace(/<span class=\"n_subtitle\"/gi, "- <span class=\"n_subtitle\"");
	result = result.replace(/<div class=\"n_subtitle\"/gi, "<br /><div class=\"n_subtitle\"");
	result = result.replace(/<div class=\"n_comment_/gi, "<div class=\"n_comment_");
	result = result.replace(/n_new_post\">/gi, "n_new_post\">&nbsp;");

	// On rajoute un lien à la fin, menant à toutes les actus de PCi
	result += "<div class='titre_actus'><a class='head' href='' onClick='open_tab(\"" + url + "\")'>Accéder à l'ensemble des actualités de PC INpact</a>";

	// On renvoie le résultat
	return result;
}

// La fonction qui traite les actus
function actus(url) 
{
	window.localStorage.setItem('last_rub_s', 'actus');
	modify_body_size('scroll');
	
	// On récupère un élément temporel
	var d = new Date();
	
	// On récupère l'url à traiter
	var url_red = get_url_actus(url);
	
	// On récupère le nom du rédacteur
	var n_redac = get_red_name(url_red);	

	// On affiche le sous menu
	document.getElementById("ss_menu").innerHTML = "<a href=\"\" onclick=\"actus('http://www.pcinpact.com/actu/archive.php?f=0&nbjour=30&dbjour=&dbmois=&dban=&fnjour=&fnmois=&fnan=&rub=0&r=11')\">Damien</a> | " + "<a href=\"\" onclick=\"actus('http://www.pcinpact.com/actu/archive.php?f=0&nbjour=30&dbjour=&dbmois=&dban=&fnjour=&fnmois=&fnan=&rub=0&r=2')\">David</a> | " + "<a href=\"\" onclick=\"actus('http://www.pcinpact.com/actu/archive.php?f=0&nbjour=30&dbjour=&dbmois=&dban=&fnjour=&fnmois=&fnan=&rub=0&r=10')\">Julien</a> | " + " <a href=\"\" onclick=\"actus('http://www.pcinpact.com/actu/archive.php?f=0&nbjour=30&dbjour=&dbmois=&dban=&fnjour=&fnmois=&fnan=&rub=0&r=3')\">Marc</a> | " + " <a href=\"\" onclick=\"actus('http://www.pcinpact.com/actu/archive.php?f=0&nbjour=30&dbjour=&dbmois=&dban=&fnjour=&fnmois=&fnan=&rub=0&r=4')\">Nil</a> | " + "<a href=\"\" onclick=\"actus('http://www.pcinpact.com/actu/archive.php?f=0&nbjour=30&dbjour=&dbmois=&dban=&fnjour=&fnmois=&fnan=&rub=0&r=12')\">Sébastien</a> | " + " <a href=\"\" onclick=\"actus('http://www.pcinpact.com/actu/archive.php?f=0&nbjour=30&dbjour=&dbmois=&dban=&fnjour=&fnmois=&fnan=&rub=0&r=8')\">Vincent</a> || " + " <a href=\"\" onclick=\"actus('http://www.pcinpact.com/actu/archive.php')\">Tous</a>" + " <br /><br />";
		
	// Si le cache est supérieur au délai fixé, ou s'il y a des actualités, on effectue la requête
	if ((d.getTime() - window.localStorage.getItem('actus_' + n_redac + '_cache_time') > window.localStorage.getItem('cache_delay') * 60 * 1000) || window.localStorage.getItem('badge_count') != 0)
	{
		// On remet à zéro le nombre d'actus en attente de lecture
		// On met à jour le badge
		window.localStorage.setItem('badge_count', 0);
		badge_update('news');
		
		// On effectue la requête
		var xmlhttp = new XMLHttpRequest();
		xmlhttp.onreadystatechange=function()
		{
			// si la requête est OK
			if(xmlhttp.readyState==4)
			{
				// Si la réponse n'est pas vide
				if(!xmlhttp.responseText=="")
				{
					// On récupère le résultat
					var result = get_actus(xmlhttp.responseText, url_red, n_redac);
					
					// On affiche le résultat
					document.getElementById('contenu').innerHTML = result;
					
					// On met le résultat en cache en fonction du nom du rédacteur récupéré
					window.localStorage.setItem('actus_' + n_redac + '_cache', result);

					// On enregistre l'heure
					var cache_time = new Date();
					window.localStorage.setItem('actus_' + n_redac + '_cache_time', cache_time.getTime());
				}
			}
			else 
			{
				// Sinon on affiche le texte de chargement
				document.getElementById("contenu").innerHTML = charg_text;
			}
		}
		
		// On envoie la requête, ici, on attend le résultat afin de pouvoir l'envoyer, d'où le "false"
		xmlhttp.open("GET",url_red,true);
		xmlhttp.send("");
	}
	// Sinon, on affiche la version en cache
	else document.getElementById("contenu").innerHTML = window.localStorage.getItem('actus_' + n_redac + '_cache');
}